\chapter{Levantamento de Frameworks da Web Semântica}
\label{ch:semanticwebframeworkssurvey}

\begin{quotation}[Um Passeio No Mundo Livre, Afrociberdelia]{Chico Science}
Um passo à frente e você não está mais no mesmo lugar\\
One step forward and you are not in the same place
\end{quotation}


\section{Começo da Adoção dos Frameworks da Web Semântica}
\label{sc:adocaowefram}
Uma das principais preocupações de área de engenharia de software diz 
respeito à reutilização [1]. Isso porque a reutilização no contexto de 
desenvolvimetno de software pode contribuir significativamente para aumentar a 
qualidade do software assim como reduzir o esforço  no seu desenvolvimento. 
Uma das técnicas de maior impacto de reuso de projeto e código em larga escala 
que foi proposta nos últimos anos é o desenvolvimetno e codificação de 
Frameworks Orientados a Objetos (OO) [3, 4]. Frameworks OO possibilitam o 
desenvolvimento com reuso, de família de aplicações[8], criadas a partir de uma 
estrutura que captura os conceitos mais gerais das aplicações. Eles permitem gerar 
famílias de aplicações de um mesmo domínio, atravésda definição da 
implementação de um núcleo que lida com os requisitos comuns dessas 
aplicações, e definem um conjunto de pontos de extensão na forma de classes 
abstratas ou interfaces, que são estendidas para concretizar a funcionalidade 
específica de aplicações concretas da família. 
Apesar dos benefícios trazidos pela tecnologia de frameworks OO, diversos 
problemas foram identificados a partir da experiência do uso de tal tecnologia na 
construção de sistemas OO, tais como: (i) dificuldade para configuração e 
customização do framework para atender diferentes cenários de reuso; e (ii) 
dificuldade para compor o framework de forma transversal a outros frameworks 
existentes. A partir da identificação de tais problemas, pesquisadores têm proposto 
a implementação de frameworks usando de forma complementar técnicas OO e 
técnicas de Desenvolvimento de Software Orientado aAspectos. 
Desenvolvimento de software orientado a aspectos (DSOA) [5, 6] é uma 
abordagem que busca a modularização dos chamados interesses transversais, os 
quais os paradigmas atuais (ex: orientação a objetos) não são capazes de capturar 
explicitamente. Interesses transversais são aquelesque entrecortam
1
diversos 
módulos em um dado sistema de software. DSOA propõeo uso de técnicas e 
PUC-Rio - Certificação Digital Nº 0510982/CA
14 
linguagens de programação que permitam a especificação de software complexo 
com uma separação clara entre a funcionalidade básica do sistema e seus 
interesses transversais. A abstração usada para modularizar os interesses 
transversais é chamada de Aspecto. 
A utilização de forma complementar, dos paradigmas  de orientação a 
aspectos (OA) e orientação a objetos (OO), tem demonstrado benefícios para o 
desenvolvimento de softwares. A modularização de determinadas propriedades 
sistêmicas ou requisitos não funcionais transversais, tais como, rastreamento, 
segurança, demarcação de transações, e auditoria, são notadamente beneficiados 
com o uso de técnicas de programação orientada a aspectos. De forma geral, a 
utilização do paradigma de orientação a aspectos, visa melhorar a diminuição do 
acoplamento e aumentar a modularidade entre os componentes de um sistema de 
software.


\subsection{Cenário Atual dos Frameworks da Web Semântica}
\label{sc:cenarioatualwebsfra}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.

\subsection{Resumo do Estudo}
\label{sc:resumoestudofra}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.




\section{Requisitos para Adoção de um Framework da Web Semântica}
\label{sc:requisitosporfrao}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.


\section{Resumo deste Capítulo}
\label{sc:resumorequisitosfra}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.




Software maintenance and evolution are characterised by their huge cost and
slow speed of implementation. However they are inevitable activities -- almost
all software that is useful and successful stimulates user-generated requests for
change and improvements \citep{Bennett2000}. Sommerville
\citep{Sommerville2007} is even more emphatic and says that software changes
is a fact of life for large software systems. In addition, a set of studies
\citep{Huff1990,Moad1990,Eastwood1993,Erlikh2000} has stated along the years
that software maintenance and evolution is the most expensive phase of
software development, taking up to 90\% of the total costs.

All of these characteristics from software maintenance leaded the academia and
industry to investigate constantly new solutions to reduce costs in such
phase. In this context, \acf{SCM} is a set of
activities and standards for managing and evolving software, defining how to
record and process the proposed system changes, how to relate these to system
components, among other procedures. For all these tasks, it has proposed
different tools, such as version control systems and bug trackers
\citep{Sommerville2007}. However, some issues may arise due to these tools
usage. In this work, the focus are the issues from bug trackers, as
it will be discussed along this dissertation.











